#!/usr/bin/env python
# coding: utf-8

# In[1]:


import sys

class StudentGradeSystem:
    def __init__(self):
        self.students = []
    
    def add_student(self):
        """学生成绩记录"""
        print("\n--- 添加学生成绩 ---")
        while True:
            try:
                name = input("请输入学生姓名: ").strip()
                if not name:
                    print("姓名不能为空，请重新输入。")
                    continue
                    
                student_id = input("请输入学号: ").strip()
                if not student_id:
                    print("学号不能为空，请重新输入。")
                    continue
                
                if any(s['student_id'] == student_id for s in self.students):
                    print(f"学号 {student_id} 已存在，请重新输入。")
                    continue
                
                course = input("请输入课程名称: ").strip()
                if not course:
                    print("课程名称不能为空，请重新输入。")
                    continue
                
                grade = float(input("请输入成绩(0-100): "))
                if grade < 0 or grade > 100:
                    print("成绩必须在0-100之间，请重新输入。")
                    continue
                
                self.students.append({
                    'name': name,
                    'student_id': student_id,
                    'course': course,
                    'grade': grade
                })
                print("成绩添加成功!")
                break
                
            except ValueError:
                print("输入无效，请确保成绩为数字。")
    
    def query_grades(self):
        """查询学生成绩"""
        print("\n--- 查询学生成绩 ---")
        if not self.students:
            print("当前没有学生记录。")
            return
        
        print("1. 按姓名查询")
        print("2. 按学号查询")
        print("3. 按课程查询")
        print("4. 返回主菜单")
        
        choice = input("请选择查询方式(1-4): ")
        
        if choice == '1':
            name = input("请输入要查询的学生姓名: ").strip()
            results = [s for s in self.students if s['name'] == name]
            self._display_results(results, f"姓名: {name}")
            
        elif choice == '2':
            student_id = input("请输入要查询的学号: ").strip()
            results = [s for s in self.students if s['student_id'] == student_id]
            self._display_results(results, f"学号: {student_id}")
            
        elif choice == '3':
            course = input("请输入要查询的课程名称: ").strip()
            results = [s for s in self.students if s['course'] == course]
            self._display_results(results, f"课程: {course}")
            
        elif choice == '4':
            return
        else:
            print("无效选择，请重新输入。")

 def _display_results(self, results, title):
        """显示查询结果"""
        if not results:
            print(f"没有找到{title}的记录。")
        else:
            print(f"\n--- {title} 的成绩记录 ---")
            print("{:<10} {:<15} {:<15} {:<10}".format("姓名", "学号", "课程", "成绩"))
            for record in results:
                print("{:<10} {:<15} {:<15} {:<10}".format(
                    record['name'], record['student_id'], record['course'], record['grade']
                ))
    
    def statistics(self):
        """统计成绩"""
        print("\n--- 成绩统计 ---")
        if not self.students:
            print("当前没有学生记录。")
            return
        
        course = input("请输入要统计的课程名称: ").strip()
        course_grades = [s['grade'] for s in self.students if s['course'] == course]
        
        if not course_grades:
            print(f"没有找到课程 {course} 的记录。")
            return
        
        average = sum(course_grades) / len(course_grades)
        max_grade = max(course_grades)
        min_grade = min(course_grades)
        
        print(f"\n课程 {course} 的成绩统计:")
        print(f"平均分: {average:.2f}")
        print(f"最高分: {max_grade}")
        print(f"最低分: {min_grade}")
    
    def display_menu(self):
        """显示主菜单"""
        print("\n=== 学生成绩管理系统 ===")
        print("1. 添加学生成绩")
        print("2. 查询学生成绩")
        print("3. 统计成绩")
        print("4. 退出系统")
    
    def run(self):
        """运行系统"""
        while True:
            self.display_menu()
            choice = input("请选择操作(1-4): ")
            
            if choice == '1':
                self.add_student()
            elif choice == '2':
                self.query_grades()
            elif choice == '3':
                self.statistics()
            elif choice == '4':
                print("感谢使用学生成绩管理系统，再见!")
                sys.exit()
            else:
                print("无效选择，请重新输入。")

if __name__ == "__main__":
    system = StudentGradeSystem()
    system.run()


# In[ ]:




